package com.lhg.pattern.creational.singleton;

/**
 * 双检锁/双重校验锁
 *
 * @author Admin
 */
public class Singleton4 {
    private volatile static Singleton4 instance;

    public Singleton4() {
    }
    /**
     * 使用同步方法对进行加锁，可以使线程安全
     * 但由于只在初始化时会出现线程完全问题
     * 会影响效率
     */
    public static  Singleton4 getInstance() {
        if (instance==null){
            synchronized (Singleton4.class){
                if (instance==null){
                    instance=new Singleton4();
                }
            }
        }
        return instance;
    }
    public void showMessage(){
        System.out.println("Hello World!");
    }
}
